#pragma once

//#include <srs_app_http_static.hpp>
#include <srs_core.hpp>
#include <srs_app_http_conn.hpp>

#ifdef SRS_AUTO_HTTP_SERVER

/**
 * the flv vod stream supports flv?start=offset-bytes.
 * for example, http://server/file.flv?start=10240
 * server will write flv header and sequence header,
 * then seek(10240) and response flv tag data.
 */
class SrsVodStream : public SrsHttpFileServer {
public:
    SrsVodStream(const std::string& root_dir);
    virtual ~SrsVodStream();
protected:
    virtual int serve_flv_stream(ISrsHttpResponseWriter* w, ISrsHttpMessage* r, const std::string& fullpath, int offset);
    virtual int serve_mp4_stream(ISrsHttpResponseWriter* w, ISrsHttpMessage* r, const std::string& fullpath, int start, int end);
};

/**
* the http static server instance,
* serve http static file and flv/mp4 vod stream.
*/
class SrsHttpStaticServer : virtual public ISrsReloadHandler {
private:
    SrsServer* server;
public:
    SrsHttpServeMux mux;
public:
    SrsHttpStaticServer(SrsServer* svr);
    virtual ~SrsHttpStaticServer();
public:
    virtual int initialize();
    // interface ISrsReloadHandler.
public:
    virtual int on_reload_vhost_http_updated();
};

#endif
